package week_3.homework;

import week_2.homework.CircularArrayQueue;

import java.util.Scanner;
//用循环数组实现杨辉三角。
/*思想：使用循环队列输出杨辉三角
（1）用数组实现循环队列（要考虑扩容问题，否则不加分）；
（2）输出杨辉三角；
（3）代码运行结果添加学号水印，并上传；代码传到码云，附上码云链接。
*/
public class Pascal {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入你想看到的杨辉三角的行数");
        int x = scan.nextInt();//输入几层是几层
        int num[][] = new int[x][x];
        //计算每一层杨辉三角的数字内容并存到数组中去。
        for(int m=0;m<x;m++)//每一层个数都小于等于层数，m代表层数，n代表每一层的第几个数
        {
            for(int n=0;n<=m;n++)
            {
                if(n==0||m==n)//每一层的开头都是1，m==n的时候也是1,必须要这个，凡事都得有个开头
                {
                    num[m][n]=1;
                }
                else
                    num[m][n]=num[m-1][n-1]+num[m-1][n];//这是递推的方法.
        }
        }
        //输出数组
        for(int i=0;i<x;i++)
        {
            for(int y=i;y<x;y++)//设计空格
            {
                System.out.print(" ");
            }
            for(int j=x-i;j<=x;j++)//打印数组，每层循环几次就几个
            {
                System.out.print(num[i][x-j]+" ");
            }
            System.out.println();//每层换行
        }

    }


}
